/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package CONTROLES;


import MODELOS.PlanInversion;
import UTILITARIOS.EncriptarCadena;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
/**
 *
 * @author Administrador
 */
public class ControlPlanInversion {

    private PlanInversion plan_inversion = new PlanInversion();
    private ArrayList<PlanInversion> listaPlan = new ArrayList<PlanInversion>();


    public ControlPlanInversion(){

    }

    public PlanInversion getPlanInversion() {
        return plan_inversion;
    }

    public void setPlanInversion(PlanInversion plan_inversion) {
        this.plan_inversion = plan_inversion;
    }

    public boolean registrarPlanInversion(PlanInversion plan)
    {

        Conexion conection = new Conexion();

        try {
            Connection conectado = conection.getConexion();
            String cad = new EncriptarCadena().Encriptar("nfn", String.valueOf(plan.getCodigoPlan()), true);
            PreparedStatement ps = conectado.prepareStatement("INSERT INTO plan_inversion(id_plan, nombre, descripcion, frecuencia_pago, duracion, porcentaje,id_sucursal,codigo_plan)VALUES (nextval('plan_inversion_id_plan_seq'),'"+plan.getNombrePlan()+"','"+plan.getDescripcionPlan().toUpperCase()+"','"+plan.getFrecuenciaPago()+"','"+plan.getDuracion()+"','"+plan.getPorcentaje()+"','"+plan.getIdSucursal()+"','"+cad+"')");
            ps.executeUpdate();
            ps.close();
        } catch (SQLException em) {
            System.out.println("error al Crear el nuevo Plan de Inversion "+em.getLocalizedMessage() );
            return false;
        }
        return true;
    }

    public ArrayList<PlanInversion> getListaPlan(int idSucursal) {

        listaPlan = getPlanes(idSucursal);
        return listaPlan;
    }

    public String[] nombresPlanes(int idSucursal)
    {
        ArrayList<PlanInversion> l = getListaPlan(idSucursal);
        String lista[]= new String[l.size()];

        for(int i=0; i<l.size(); i++ )
            lista[i]=l.get(i).getIdPlanInversion()+"-"+l.get(i).getNombrePlan().toString();
        return lista;
    }
    
    private ArrayList<PlanInversion> getPlanes(int idSucursal){
       Conexion conection = new Conexion();
       ArrayList<PlanInversion> res = new ArrayList<PlanInversion>();
       PlanInversion plan;
    try{
            Connection conectado = conection.getConexion();

            PreparedStatement psc = conectado.prepareStatement("select * from plan_inversion where id_sucursal = '"+idSucursal+"' ORDER BY id_plan ASC");
            ResultSet respEmp = psc.executeQuery();
            while (respEmp.next()){

                plan= new PlanInversion();
                plan.setIdPlanInversion(respEmp.getInt(1));
                plan.setNombrePlan(respEmp.getString(2));
                plan.setDescripcionPlan(respEmp.getString(3));
                plan.setFrecuenciaPago(respEmp.getInt(4));
                plan.setDuracion(respEmp.getInt(5));
                plan.setPorcentaje(respEmp.getDouble(6));
                plan.setIdSucursal(respEmp.getInt(7));
                String cad = new EncriptarCadena().Encriptar("nfn", respEmp.getString(8), false);
                plan.setCodigoPlan(Double.valueOf(cad));

                res.add(plan);

            }
        }
            catch (SQLException e){
            System.out.println("error al recuperar lista de Planes " + e.getLocalizedMessage());
        }

        return res;
    }

    public PlanInversion damePlan(int idPlan) {
    Conexion conection = new Conexion();
    PlanInversion plan = new PlanInversion();
    try {
            Connection conectado = conection.getConexion();
            PreparedStatement psA = conectado.prepareStatement("select * from plan_inversion where id_plan ='"+idPlan+"'");
            ResultSet respA = psA.executeQuery();
            if(respA.next()){
                plan.setIdPlanInversion(respA.getInt(1));
                plan.setNombrePlan(respA.getString(2));
                plan.setDescripcionPlan(respA.getString(3));
                plan.setFrecuenciaPago(respA.getInt(4));
                plan.setDuracion(respA.getInt(5));
                plan.setPorcentaje(respA.getDouble(6));
                plan.setIdSucursal(respA.getInt(7));
                String cad = new EncriptarCadena().Encriptar("nfn", respA.getString(8), false);
                plan.setCodigoPlan(Double.valueOf(cad));
            }
        } catch (SQLException ex) {
            System.out.println("Error buscar El plan por id : "+ex.getLocalizedMessage());
        }
    return plan;
    }

    public static void main (String args [])
    {
        ControlPlanInversion con = new ControlPlanInversion();
//        System.out.println("Plan inversion... "+con.sacarEmpresa().getNombreEmpresa());
    }

    public boolean ActualizarPlanInversion(PlanInversion plan) {
        Conexion conection = new Conexion();

        try {
            Connection conectado = conection.getConexion();
            String cad = new EncriptarCadena().Encriptar("nfn", String.valueOf(plan.getCodigoPlan()), true);
 
            PreparedStatement ps = conectado.prepareStatement("UPDATE plan_inversion SET nombre = '"+plan.getNombrePlan()+"',descripcion='"+plan.getDescripcionPlan()+"',frecuencia_pago = '"+plan.getFrecuenciaPago()+"',duracion = '"+plan.getDuracion()+"',porcentaje ='"+plan.getPorcentaje()+"', codigo_plan = '"+cad+"' WHERE id_plan = '"+plan.getIdPlanInversion()+"';");
            ps.executeUpdate();
            ps.close();
        } catch (SQLException em) {
            System.out.println("error al ACTUALIZAR el nuevo Plan de Inversion "+em.getLocalizedMessage() );
            return false;
        }
        return true;
    }
}
